Java Technologies Unbounded Wildcards (<?>) গাইড ও নোট

244

Java Generics-এ Unbounded Wildcards হলো একটি বিশেষ বৈশিষ্ট্য, যা <?> চিহ্ন দ্বারা বোঝানো হয়। এটি এমন একটি wildcard টাইপ যা যেকোনো টাইপকে গ্রহণ করতে পারে। <?> সাধারণত তখন ব্যবহার করা হয়, যখন মেথড বা ডেটা স্ট্রাকচারে টাইপ প্যারামিটারটি গুরুত্বপূর্ণ নয় বা নির্দিষ্ট টাইপের উপর নির্ভর করে না।


Unbounded Wildcards এর ব্যবহার:

<?> ব্যবহার করে নিম্নলিখিত ক্ষেত্রে কাজ করা হয়:

  1. ডেটার টাইপ নির্দিষ্ট না থাকলে।
  2. মেথড শুধুমাত্র ডেটা পড়ার জন্য ব্যবহৃত হলে (write অপারেশন প্রয়োজন না হলে)।
  3. বিভিন্ন টাইপের Collection এর সাথে কাজ করার সময়।

Syntax:

Collection<?> collection = new ArrayList<>();

উদাহরণ এবং ব্যবহার:

1. Unbounded Wildcard দিয়ে একটি মেথড:

import java.util.List;

public class UnboundedWildcardExample {
    // Method with unbounded wildcard
    public static void printList(List<?> list) {
        for (Object element : list) {
            System.out.println(element);
        }
    }

    public static void main(String[] args) {
        List<Integer> intList = List.of(1, 2, 3);
        List<String> strList = List.of("A", "B", "C");

        // Unbounded wildcard method calls
        printList(intList); // Works with Integer list
        printList(strList); // Works with String list
    }
}

আউটপুট:

1
2
3
A
B
C

2. Unbounded Wildcard এবং Collections:

import java.util.ArrayList;
import java.util.List;

public class CollectionExample {
    public static void displayCollection(List<?> collection) {
        for (Object obj : collection) {
            System.out.println(obj);
        }
    }

    public static void main(String[] args) {
        List<String> stringList = new ArrayList<>();
        stringList.add("Java");
        stringList.add("Generics");

        List<Double> doubleList = new ArrayList<>();
        doubleList.add(3.14);
        doubleList.add(1.618);

        displayCollection(stringList); // Accepts String type list
        displayCollection(doubleList); // Accepts Double type list
    }
}

আউটপুট:

Java
Generics
3.14
1.618

Unbounded Wildcard-এর সুবিধা:

  1. Reusable Methods: বিভিন্ন টাইপের Collections বা Objects এর সাথে কাজ করার জন্য একটি মেথড ব্যবহার করা যায়।
  2. Flexibility: টাইপ নির্দিষ্ট না থাকলেও কোড চালানো সম্ভব।
  3. টাইপ Safety: যদিও টাইপ নির্দিষ্ট নয়, তবে শুধুমাত্র ডেটা পড়ার জন্য এটি ব্যবহার করা হয়, ফলে টাইপ-সংক্রান্ত সমস্যা এড়ানো যায়।

সীমাবদ্ধতা (Limitations):

  • ডেটা Write করা যায় না: <?> ব্যবহার করে Collections-এ নতুন ডেটা যোগ করা সম্ভব নয়, কারণ টাইপ অজানা। শুধু null যোগ করা যায়।

    List<?> list = new ArrayList<>();
    list.add("Hello"); // কম্পাইল টাইম ত্রুটি
    list.add(null);    // ঠিক আছে
    
  • Read-Only Use: Unbounded Wildcards সাধারণত ডেটা পড়ার জন্য ব্যবহৃত হয়। যদি ডেটা মডিফাই বা Write করার প্রয়োজন হয়, তাহলে Bounded Wildcards (<? extends T> বা <? super T>) ব্যবহার করা উচিত।

যখন Unbounded Wildcards ব্যবহার করবেন:

  1. যখন আপনি শুধু Collection-এর উপাদানগুলি পড়বেন।
  2. টাইপ প্যারামিটার নির্দিষ্ট করার প্রয়োজন নেই।
  3. কোডের টাইপ-স্বাধীনতা এবং পুনর্ব্যবহারযোগ্যতা বাড়ানোর জন্য।

Content added By
Promotion

Are you sure to start over?

Loading...